package test;

public class Maze {
    // 递归 算法 迷宫回溯
    //---用一个二维数组模拟迷宫 小球从起点走到终点（不考虑最短路径）
    //扩展考虑最短路径解法
    int[][]array=new int[8][7];

    public Maze(){
            for(int i=0;i<array[0].length;i++){
                array[0][i]=1;
                array[7][i]=1;
            }

            for(int i=0;i<8;i++){
                array[i][0]=1;
                array[i][6]=1;
            }
            array[3][1]=1;
            array[3][2]=1;

    }
//遍历数组
    public void show(){
        for(int i[]:array){
            for(int j:i){
                System.out.print(j+" ");
            }
            System.out.println();
        }
    }
    public boolean setWay(int[][] array,int i,int j){
        if(array[4][1]==2){//已经到达终点 递归终止  41
            return true;
        }else{
            //假定路可以走通
            show();
            System.out.println("--------------");
            if(array[i][j]==0){
                array[i][j]=2;
                 if(setWay(array,i+1,j)){//向下走
                     return true;
                 }else if(setWay(array,i,j+1)){//向右走
                     return true;
                 }else if(setWay(array,i-1,j)){//向上走
                     return true;
                 }else if(setWay(array,i,j-1)){//向左走
                     return true;
                 }else{//走不通
                    array[i][j]=3;
                    return false;
                 }
            }else {//array[i][j]]!=0可能是1，2，3 ---- 1->墙壁 2-走过 3-走不通
                return false;
            }
        }

    }
}
